const path = require('path');
const Ps = require('ee-core/ps');
const Log = require('ee-core/log');
const Conf = require('ee-core/config');
const EE = require('ee-core/ee');
const fs = require('fs');


/**
 * 日期检查-定期删除
 * @class
 */
class LogCheckAddon {

  constructor() {
    this.fileList = []; // 存放文件路径的数组
  }

  /**
   * 创建则定期检查删除过期日志
   */
  create () {
    Log.info("LogCheckAddon create!");
    let logger = Conf.getValue("logger");
    let logDir = logger.dir;
    // 循环遍历目录下所有文件
    this.traverseDir(logDir)  
  }

  traverseDir(path) {
    
    const regex = /(\d{4})(\d{2})(\d{2})/; // 定义正则表达式
    const curDate = new Date();
    try {
        const files = fs.readdirSync(path); // 同步读取指定目录下的所有文件名
        for (let i = 0; i < files.length; i++) {
            const file = path + '/' + files[i];
            if (fs.statSync(file).isDirectory()) { // 如果当前项为子目录，则进行递归调用
              this.traverseDir(file);
            } else { // 否则将该文件添加到结果数组中
              // 判断日志文件格式
              // 使用match()函数进行匹配并获取结果
              const matchResult = files[i].match(regex);
              if (matchResult) {
                  const year = matchResult[1]; // 第一组匹配到的内容（四位数的年份）
                  const month = matchResult[2]; // 第二组匹配到的内容（两位数的月份）
                  const day = matchResult[3]; // 第三组匹配到的内容（两位数的日期）
                  let tmpDate = new Date(year + "-" + month + "-" + day);
                  // 计算两个日期之间相差的时间（单位为毫秒）
                  const diffInMilliseconds = Math.abs(curDate - tmpDate);
                  // 将毫秒转换成天数
                  const daysDiff = Math.ceil(diffInMilliseconds / (1000 * 60 * 60 * 24));
                  let logger = Conf.getValue("logger");
                  if (daysDiff > logger.saveDays) {
                    fs.unlinkSync(file);
                  }
                  console.log(`${year}${month}${day}`); // 输出提取到的日期
              } else {
                  console.log("未能提取到日期");
              }
              //fileList.push(file);
            }
        }
    } catch (err) {
        console.error("Error reading directory", err);
    }
  }
}

LogCheckAddon.toString = () => '[class LogCheckAddon]';
module.exports = LogCheckAddon;